package lambda_expression;

/**
 * 方法重载对于lambda表达式的影响
 */
public class App4 {

    interface Param1{
        void outInfo(String info);
    }

    interface Param2{
        void outInfo(String info);
    }


    //定义重载的方法
    public void lambdaMethod(Param1 param){
        param.outInfo("hello param1 ...");
    }

    public void lambdaMethod(Param2 param){
        param.outInfo("hello param2 ...");
    }

    public static void main(String[] args) {
        App4 app4 = new App4();
        app4.lambdaMethod(new Param1() {
            @Override
            public void outInfo(String info) {
                System.out.println(info);
            }
        });

        app4.lambdaMethod(new Param2() {
            @Override
            public void outInfo(String info) {
                System.out.println(info);
            }
        });


        // 使用lambda表达式会报错，请使用匿名内部类的形式（原因是存在多个名称相同的函数式接口）
//        app4.lambdaMethod((String info) -> {
//            System.out.println(info);
//        });

    }


}
